package com.ruoyi.framework.jwt.mapper;

import com.ruoyi.framework.jwt.domain.SysUserToken;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户TokenMapper接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface SysUserTokenMapper
{
    /**
     * 查询用户Token
     * 
     * @param tokenId Token ID
     * @return 用户Token
     */
    public SysUserToken selectByTokenId(String tokenId);

    /**
     * 查询用户Token列表
     * 
     * @param sysUserToken 用户Token
     * @return 用户Token集合
     */
    public List<SysUserToken> selectUserTokenList(SysUserToken sysUserToken);

    /**
     * 根据用户ID查询Token列表
     * 
     * @param userId 用户ID
     * @return Token列表
     */
    public List<SysUserToken> selectByUserId(Long userId);

    /**
     * 新增用户Token
     * 
     * @param sysUserToken 用户Token
     * @return 结果
     */
    public int insertUserToken(SysUserToken sysUserToken);

    /**
     * 修改用户Token
     * 
     * @param sysUserToken 用户Token
     * @return 结果
     */
    public int updateUserToken(SysUserToken sysUserToken);

    /**
     * 删除用户Token
     * 
     * @param tokenId Token ID
     * @return 结果
     */
    public int deleteByTokenId(String tokenId);

    /**
     * 根据用户ID删除Token
     * 
     * @param userId 用户ID
     * @return 结果
     */
    public int deleteByUserId(Long userId);

    /**
     * 批量删除用户Token
     * 
     * @param tokenIds Token ID数组
     * @return 结果
     */
    public int deleteUserTokenByTokenIds(String[] tokenIds);

    /**
     * 清理过期Token
     * 
     * @return 清理数量
     */
    public int cleanExpiredTokens();

    /**
     * 统计用户Token数量
     * 
     * @param userId 用户ID
     * @return Token数量
     */
    public int countByUserId(Long userId);

    /**
     * 更新Token状态
     * 
     * @param tokenId Token ID
     * @param status 状态
     * @return 结果
     */
    public int updateTokenStatus(@Param("tokenId") String tokenId, @Param("status") String status);
}